package org.infodavid.common.model;

import java.util.List;

import org.infodavid.common.model.components.IEMail;
import org.infodavid.common.model.components.ILocation;
import org.infodavid.common.model.components.IPhone;
import org.infodavid.common.model.components.IUri;
import org.infodavid.common.persistence.ICommented;
import org.infodavid.common.persistence.IDataObject;
import org.infodavid.common.persistence.INamed;

/**
 * The Interface IEntity.
 */
public interface IEntity extends IDataObject<Long>, INamed, ICommented, IGenericObject {

  /** The EMAILS. */
  String EMAILS = "emails";

  /** The PHONES. */
  String PHONES = "phones";

  /** The WEBSITES. */
  String WEBSITES = "webSites";

  /** The LOCATIONS. */
  String LOCATIONS = "locations";

  /** The IMAGE. */
  String IMAGE = "image";

  /** The ENTITY. */
  String ENTITY = "entity";

  /** The IDENTITY. */
  String IDENTITY = "identity";

  /** The constant MAX_LENGTH_IDENTITY. */
  int MAX_LENGTH_IDENTITY = 128;

  /**
   * Gets the mails.
   * @return the mails
   */
  List<IEMail> getEmails();

  /**
   * Gets the locations.
   * @return the locations
   */
  List<ILocation> getLocations();

  /**
   * Gets the image.
   * @return the image
   */
  IImageData getImage();

  /**
   * Gets the phone numbers.
   * @return the phone numbers
   */
  List<IPhone> getPhones();

  /**
   * Gets the websites.
   * @return the websites
   */
  List<IUri> getWebSites();

  /**
   * Sets the image.
   * @param value the value
   */
  void setImage(IImageData value);

  /**
   * Gets the identity.
   * @return the identity
   */
  String getIdentity();

  /**
   * Sets the identity.
   * @param value the value
   */
  void setIdentity(String value);
}
